// pages/my/records/records.js
const call = require('../../utils/request.js')
Page({

  /**
   * 页面的初始数据
   */
  data: {
    showSexWin:false, //性别弹窗
    name:'', //姓名
    birth_at:'1990-02-01', //年龄日期
    age: '', //出生年份
    papers:'', //身份证
    gender:{   // 性别
      arr:['','男','女'],
      index: null
    },
    papers_type:{  // 证件类型
      arr:['','身份证'],
      index: 0
    },
    dm_type:{ //糖尿病类型
      arr:['其他','1型糖尿病','2型糖尿病','妊娠型糖尿病','糖尿病前期','特殊型糖尿病'],
      index: null,
    },
    treatment:{ //治疗方式
      arr:['口服药','胰岛素治疗','饮食调控','运动调控'],
      index: null,
    },
    is_smoke:{ //是否吸烟
      arr:['否','是'],
      index: null
    },
    is_drink:{ //是否喝酒
      arr:['否','是'],
      index: null
    },
    height:{  //身高
      arr:[],
      index:null
    },
    weight:{  //体重
      arr:[],
      index:null
    },
    dm_age:{ //糖龄
      arr:['1个月','2个月','3个月','4个月','5个月','6个月','7个月','8个月','9个月','10个月','11个月'],
      index:15
    },
    dm_ageIndex: null,
    complicationArr:''
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.initData();
    this.getInfo();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  },

  /**
   * 初始化部分数据 
   */
  initData(){
    let height = [[],[],['cm']],weight=[[],[],['kg']];
    let dm_age = this.data.dm_age.arr;
    //身高范围
    for(let i=30;i<231;i++){
      height[1].push(i)
    }
    //体重范围
    for(let i=17;i<201;i++){
      weight[1].push(i)
    }
  
    //糖龄范围
    for(let i=1;i<81;i++){
      dm_age.push(i+'年')
    }

    //赋值
    this.setData({
      height:{
        arr:height,
        index:[0,135,0]
      },
      weight:{
        arr:weight,
        index:[0,43,0]
      },
      dm_age:{
        arr:dm_age,
        index:15
      }
    })
    
  },

  /**
   * 文本框数据绑定 
   */
  bindinput(e){
    const field = e.currentTarget.dataset.name;
    const type = e.currentTarget.dataset.type;
    const value = e.detail.value;
    let data = {[`${field}`]:value}
    if(field=="birth_at"){
      this.modifyInfo(field,value,type);
      const year = new Date().getFullYear();
      data = Object.assign(data,{
        age: (year - parseInt(value.split('-')[0]))
      })
    }
    this.setData(data)
  },
  
  /**
   * 文本框失焦存值
   */
  changeInfo(e){
    const field = e.currentTarget.dataset.name;
    const type = e.currentTarget.dataset.type;
    const value = e.detail.value;
    
    this.modifyInfo(field,value,type);
  },

  /**
   * 下拉选择事件
   */
  bindPickerChange(e){
    const field = e.currentTarget.dataset.name;
    const type = e.currentTarget.dataset.type;
    this.setData({
      [`${field}.index`]:e.detail.value
    })

    let value = this.data[field].arr[e.detail.value];
    switch(field){
      case 'gender':
        value = value=="男"?1:2;
        break;
      case 'dm_type':
      case 'is_smoke':
      case 'is_drink':
      case 'papers_type':
        value = e.detail.value;
        break;
      case 'treatment':
        value = parseInt(e.detail.value)+1;
        break;
      case 'dm_age':
        this.setData({
          dm_ageIndex: e.detail.value
        })
        if(value.indexOf("个月")>-1){
          value = value.split("个月")[0];
        }else{
          value = parseInt(value.split("年")[0])*12;
        }
        break;
      case 'height':
        value = this.data[field].arr[1][e.detail.value[1]];
        break;
      case 'weight':
        value = this.data[field].arr[1][e.detail.value[1]];
        break;
    }

    this.modifyInfo(field,value,type);
  },

  /**
   * 获取个人档案信息
   */
  getInfo(){
    wx.showLoading({
      title: '正在获取数据',
      mask:true
    })
    //获取基本信息
    call.post('/api/user/user_profile').then(res=>{
      wx.hideLoading();
      console.log("获取用户基本信息",res)
      const year = new Date().getFullYear();
      const data = res.data.data;
      this.setData({
        name: data.name,
        ['gender.index']: data.gender,
        birth_at: data.birth_at,
        age: (data.birth_at?(year-parseInt(data.birth_at.split('-')[0])):''),
        ['papers_type.index']: data.papers_type,
        papers: data.papers,
        ['height.index[1]']: this.data.height.arr[1].indexOf(data.height),
        ['weight.index[1]']:this.data.weight.arr[1].indexOf(parseInt(data.weight)),
      })
    })
    //获取病史信息
    call.get('/api/home/health_archives').then(res=>{
      wx.hideLoading();
      console.log("获取用户病史信息：",res)
      const data = res.data.data;
      if(res.data.code == 0 && data){
        let dm_ageIndex = this.data.dm_age.arr.indexOf(data.dm_age);
        this.setData({
          ['dm_type.index']: data.dm_type,
          ['treatment.index']: data.treatment-1,
          dm_ageIndex: dm_ageIndex,
          ['dm_age.index']: (dm_ageIndex==-1?15:dm_ageIndex),
          ['is_smoke.index']: data.is_smoke,
          ['is_drink.index']: data.is_drink,
          ['complicationArr']: data.complication,
        })
      }else{
        //糖龄,避免data为null时显示有值的问题
        this.setData({
          dm_ageIndex: -1,
          ['dm_age.index']: 15,
        })
      }
    })
  },

  /**
   * 修改个人信息
   */
  modifyInfo(field,value,type){
    wx.showLoading({
      title: '正在保存',
      mask:true
    })
    call.post('/api/home/update_field',{
      field,value,type
    }).then(res=>{
      console.log("修改个人信息",res)
      wx.hideLoading();
    })
  },

  /**
   * 默认两位数
   */
  getDbNum(e){
    return parseInt(e)<10?("0"+e):e.toString();
  },

  /**
   * 页面跳转
   */
  toUrl(e){
    const url = e.currentTarget.dataset.url;
    let data = '';
    if(url.indexOf("complication")>-1){
      data = `?arr=${this.data.complicationArr}`;
    }
    wx.navigateTo({
      url: url+data,
    })
  },

  /**
   * 显示/隐藏性别弹窗
   */
  showSexWin(){
    this.setData({
      showSexWin:true
    })
  },
  hideSexWin(e){
    const index = e.currentTarget.dataset.index;
    if(index){
      this.modifyInfo('gender',index,1);
      this.setData({
        [`gender.index`]:index,
        showSexWin:false
      })
    }else{
      this.setData({
        showSexWin:false
      })
    }
  },
})